<?php
/**
 * Classe abstraite des controleurs
 * @author Gaétan Collaud
 */
abstract class AbstractCtrl
{
	/** Primary key */
	protected $pk;
	/** Page en crous */
	protected $page;
	/** Dossier du module (tpl) */
	protected $dir;

	/**
	* Initialisation du ctrl
	* @global Array $lg Tableau de langue
	* @param String $dir Dossier template du module
	* @param String $klg Clé pour le tableau de langue
	*/
	public function init($dir, $klg){
		$this->pk = isset($_GET['pk']) ? (int)$_GET['pk'] : 0;
		$this->page = isset($_GET['p']) ? (int)$_GET['p'] : 1;
		$this->dir = $dir;
	}

	/**
	* Permet d'appeler une méthode. En général, une méthode = une page.
	* @param String $nom nom de la méthode
	*/
	final public function call($nom){
		if(method_exists($this, $nom)){
			$this->$nom();
		}else{
			Log::err(__METHOD__, "Page introuvable");
		}
	}

	/**
	* Affiche un fichier template
	* @param String $f fichier
	* @param boolean $noheader s'il faut cacher le menu
	*/
	final protected function parse($f, $noheader=false){
		Base::parse($this->dir.'html/'.$f, $noheader);
	}

	/**
	 * Affiche un fichier template sans rien autour. Utiliser pour les requête Ajax.
	 * @param String $f fichier
	 */
	final protected function parseAjax($f){
		Base::parseAjax($this->dir.$f);
	}

	/**
	 * Permet de vérifier si la personne qui visite le site à les droits nécessaires.
	 * @param String $n le nom du droit (faq, membre, ...)
	 */
	final protected function verif($n){
		Base::getSession()->verif($n, false);
	}
}
?>
